package org.example.day01;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO +
 * 输入两个字符串S和L，都只包含英文小写字母。S长度<=100，L长度<=500,000。判定S是否是L的有效字串。
 * 判定规则：S中的每个字符在L中都能找到（可以不连续），且S在Ｌ中字符的前后顺序与S中顺序要保持一致。
 * （例如，S="ace"是L="abcde"的一个子序列且有效字符是a、c、e，而"aec"不是有效子序列，且有效字符只有a、e）
 * @date 2024/3/11 15:22
 */
public class test008 {
    public static int findLastPosition(String S, String L) {
        int sLen = S.length();
        int lLen = L.length();

        int sIdx = 0; // S中字符的索引
        int lIdx = 0; // L中字符的索引

        while (sIdx < sLen && lIdx < lLen) {
            if (S.charAt(sIdx) == L.charAt(lIdx)) {
                sIdx++;
            }
            lIdx++;
        }

        if (sIdx == sLen) {
            return lIdx - 1;
        } else {
            return -1;
        }
    }

    public static void main(String[] args) {
        String S = "ace";
        String L = "abcde";
        System.out.println(findLastPosition(S, L));
    }
}

